package com.ruoyi.system.service.impl;

import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.domain.SysDataAsset;
import com.ruoyi.system.mapper.SysDataAssetMapper;
import com.ruoyi.system.service.ISysDataAssetService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 数据资产Service业务层处理
 * 
 * @author ruoyi
 */
@Service
public class SysDataAssetServiceImpl implements ISysDataAssetService
{
    @Autowired
    private SysDataAssetMapper sysDataAssetMapper;

    /**
     * 查询数据资产
     * 
     * @param assetId 数据资产ID
     * @return 数据资产
     */
    @Override
    public SysDataAsset selectSysDataAssetById(Long assetId)
    {
        return sysDataAssetMapper.selectSysDataAssetById(assetId);
    }

    /**
     * 根据名称和类型查询资产，不存在则创建
     */
    @Override
    public Long getOrCreateAsset(String assetName, String assetType, String assetDesc) {
        SysDataAsset asset = sysDataAssetMapper.selectSysDataAssetByNameAndType(assetName, assetType);
        if (asset != null) {
            return asset.getAssetId();
        }
        
        // 不存在则创建
        SysDataAsset newAsset = new SysDataAsset();
        newAsset.setAssetName(assetName);
        newAsset.setAssetType(assetType);
        newAsset.setAssetDesc(assetDesc);
        newAsset.setCreateBy(SecurityUtils.getUsername());
        sysDataAssetMapper.insertSysDataAssetSelective(newAsset);
        return newAsset.getAssetId();
    }

    /**
     * 查询数据资产列表
     * 
     * @param sysDataAsset 数据资产
     * @return 数据资产
     */
    @Override
    public List<SysDataAsset> selectSysDataAssetList(SysDataAsset sysDataAsset)
    {
        return sysDataAssetMapper.selectSysDataAssetList(sysDataAsset);
    }

    /**
     * 新增数据资产
     * 
     * @param sysDataAsset 数据资产
     * @return 结果
     */
    @Override
    public int insertSysDataAsset(SysDataAsset sysDataAsset)
    {
        sysDataAsset.setCreateBy(SecurityUtils.getUsername());
        return sysDataAssetMapper.insertSysDataAsset(sysDataAsset);
    }

    /**
     * 修改数据资产
     * 
     * @param sysDataAsset 数据资产
     * @return 结果
     */
    @Override
    public int updateSysDataAsset(SysDataAsset sysDataAsset)
    {
        return sysDataAssetMapper.updateSysDataAsset(sysDataAsset);
    }

    /**
     * 删除数据资产对象
     * 
     * @param assetId 数据资产ID
     * @return 结果
     */
    @Override
    public int deleteSysDataAssetById(Long assetId)
    {
        return sysDataAssetMapper.deleteSysDataAssetById(assetId);
    }

    /**
     * 批量删除数据资产
     * 
     * @param assetIds 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteSysDataAssetByIds(Long[] assetIds)
    {
        return sysDataAssetMapper.deleteSysDataAssetByIds(assetIds);
    }
}
